import { Injectable, UnauthorizedException } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import * as md5 from 'md5';
import { UserService } from '../user/user.service';

@Injectable()
export class AuthService {
  constructor(
    private userService: UserService,
    private jwtService: JwtService,
  ) {}

  async login(username, password) {
    // 查询用户信息：用户名唯一
    const user = await this.userService.findByUsername(username); // 获取到的密码：使用md5加密
    // 使用md5对入参password加密：安装npm i -S md5
    const md5Password = md5(password).toUpperCase();
    // step1：登录校验
    if (md5Password !== user?.password) {
      // 用户名密码不正确
      throw new UnauthorizedException();
    }
    // step2：使用JwtService生成token （在auth.module.ts中引入JwtModule -> 在auth.service.ts中引入JwtService）
    const payload = { username: user.username, userid: user.id };
    return {
      token: await this.jwtService.signAsync(payload),
    };
  }
}
